package es.tikitaka.dao;

import java.util.List;

import es.tikitaka.dictionary.MunicipioDic;
import es.tikitaka.dictionary.PerfilDic;
import es.tikitaka.dictionary.ProvinciaDic;
import es.tikitaka.domain.usuarios.Usuario;

/**
 * 
 * @author Saúl Domínguez
 * @since 2010
 * @category PFC
 */

public interface UsuarioService {

	/**
	 * 
	 * @return lista de todos los usuarios
	 */
	List<Usuario> getList();

	/**
	 * Método para comprobar si existe el nombre de usuario en la base de datos
	 * 
	 * @param username
	 *            nombre de usuario a comprobar
	 * @return true o false si existe el nombre de usuario o no
	 */
	boolean existeUsername(String username);

	/**
	 * 
	 * @param correo
	 *            Correo electrónico del usuario
	 * @return usuario Usuario al que pertenece el correo
	 */
	Usuario getUsuario(String correo);

	/**
	 * Método para buscar en el sistema los usuarios que coinciden con los
	 * criterios de búsqueda
	 * 
	 * @param buscar
	 *            campo a buscar
	 * @param perfil
	 *            perfil a buscar
	 * @param provincia
	 *            provincia donde buscar
	 * @param municipio
	 *            municipio donde buscar
	 * @param s
	 *            String con la consulta
	 * @return lista de usuarios que coinciden con los criterios de búsqueda
	 */
	List<Usuario> buscar(String buscar, PerfilDic perfil,
			ProvinciaDic provincia, MunicipioDic municipio, StringBuffer s);

	/**
	 * 
	 * @param user
	 * @return
	 */
	Usuario merge(Usuario user);

	/**
	 * 
	 * @param id
	 *            Id del usuario
	 * @return true o false si se borro correctamente o no
	 */
	boolean delete(Integer id);

	/**
	 * 
	 * @param usuario
	 *            Usuario a guardar
	 * @return true o false si se guardo correctamente o no
	 */
	boolean save(Usuario usuario);

}
